package model

import (
	"time"

	"gorm.io/gorm"
)

// Employee 员工模型
// 用于存储正式员工信息
type Employee struct {
	ID        uint           `gorm:"primarykey" json:"id"` // 主键ID
	CreatedAt time.Time      `json:"created_at"`           // 创建时间
	UpdatedAt time.Time      `json:"updated_at"`           // 更新时间
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`       // 软删除时间

	UserID        uint      `gorm:"not null;unique" json:"user_id"`   // 关联用户ID，用于关联用户表
	Name          string    `gorm:"size:50;not null" json:"name"`     // 员工姓名，最大长度50
	DepartmentID  uint      `gorm:"not null" json:"department_id"`    // 所属部门ID
	Position      string    `gorm:"size:50;not null" json:"position"` // 职位名称，最大长度50
	BaseSalary    float64   `gorm:"not null" json:"base_salary"`      // 基本工资，单位为元
	OvertimeRate  float64   `gorm:"not null" json:"overtime_rate"`    // 加班费率，表示每小时加班工资倍数
	DailySalary   float64   `gorm:"not null" json:"daily_salary"`     // 日薪，用于计算日工资
	InsuranceRate float64   `gorm:"not null" json:"insurance_rate"`   // 社保费率，表示社保缴纳比例
	FundRate      float64   `gorm:"not null" json:"fund_rate"`        // 公积金费率，表示公积金缴纳比例
	Allowance     float64   `gorm:"not null" json:"allowance"`        // 补贴金额，包括餐补、交通补贴等
	HireDate      time.Time `json:"hire_date"`                        // 入职日期，记录员工入职时间
	Status        int       `gorm:"default:1" json:"status"`          // 员工状态(1-在职,0-离职)

	// 关联
	User       User       `gorm:"foreignKey:UserID" json:"user,omitempty"`             // 关联用户信息
	Department Department `gorm:"foreignKey:DepartmentID" json:"department,omitempty"` // 关联部门信息
}
